home *** CD-ROM | disk | FTP | other *** search
- **********************************************************************
- * Program......: CUSTEXAM.PRG
- * Author.......: This is an APPLICATION OBJECT.
- * Date.........: 12-04-88
- * Notice.......: Type information here or greetings to your users.
- * dBASE Ver....: See Application menu to use as sign-on banner.
- * Generated by.: APGEN version 1.0
- * Description..: Customer Application Example
-
- * Description..: Main routine for menu system
- **********************************************************************
-
- *-- Setup environment
- SET CONSOLE OFF
- IF TYPE("gn_ApGen")="U"
- CLEAR ALL
- CLEAR WINDOWS
- CLOSE ALL
- CLOSE PROCEDURE
- gn_ApGen=1
- ELSE
- gn_ApGen=gn_ApGen+1
- IF gn_ApGen > 4
- Do Pause WITH "Maximum level of Application nesting exceeded."
- RETURN
- ENDIF
- PRIVATE gc_bell, gc_carry, gc_clock, gc_century, gc_confirm, gc_deli,;
- gc_instruc, gc_safety, gc_status, gc_score, gc_talk, gc_key
- ENDIF
- *-- Store some sets to variables
- gc_bell =SET("BELL")
- gc_carry =SET("CARRY")
- gc_clock =SET("CLOCK")
- gc_century=SET("CENTURY")
- gc_confirm=SET("CONFIRM")
- gc_deli =SET("DELIMITERS")
- gc_instruc=SET("INSTRUCT")
- gc_safety =SET("SAFETY")
- gc_status =SET("STATUS")
- gc_score =SET("SCOREBOARD")
- gc_talk =SET("TALK")
- SET CONSOLE ON
-
- SET BELL ON
- SET CARRY OFF
- SET CENTURY OFF
- SET CLOCK OFF
- SET CONFIRM OFF
- SET DELIMITERS TO ""
- SET DELIMITERS OFF
- SET DEVICE TO SCREEN
- SET ESCAPE ON
- SET EXCLUSIVE OFF
- ***SET ECHO OFF && remove for RunTime
- SET LOCK ON
- SET MESSAGE TO ""
- SET PRINT OFF
- SET REPROCESS TO 4
- SET SAFETY ON
- SET TALK OFF
-
- *-- Initialize global variables
- gn_error=0 && 0 if no error, otherwise an error occurred
- gn_ikey=0 && keypress returned from the INKEY() function
- gn_send=0 && return value from popup of position menus
- gn_trace=1 && sets trace level, however you need to change template
- gc_brdr='1' && border to use when drawing boxes
- gc_dev='CON' && Device to use for printing - See Proc. PrintSet
- gc_key='N' && leave the application
- gc_prognum=' ' && internal program counter to handle nested menus
- gc_quit=' ' && memvar for return to caller
- listval='NO_FIELD' && Pick List value
-
- *-- remove asterisk to turn clock on
- * SET CLOCK TO
- ***SET INSTRUCT OFF && remove for RunTime
- *-- Blank the screen
- SET COLOR TO
- CLEAR
- SET SCOREBOARD OFF
- SET STATUS OFF
-
- *-- Define menus
- DO MPDEF && execute Menu Process DEFinition
-
- *-- Execute main menu
- DO WHILE gc_key = 'N'
- DO CUSTMENU WITH "B00"
- IF gc_quit = 'Q'
- EXIT
- ENDIF
- ACTIVATE WINDOW Exit_App
- lc_conf=SET("CONFIRM")
- lc_deli=SET("DELIMITER")
- SET CONFIRM OFF
- SET DELIMITER OFF
- @ 1,2 SAY "Do you want to leave this application?" ;
- GET gc_key PICT "!" VALID gc_key $ "NY"
- READ
- SET CONFIRM &lc_conf.
- SET DELIMITER &lc_deli.
- RELEASE lc_conf, lc_deli
- DEACTIVATE WINDOW Exit_App
- ENDDO
-
- *-- Reset environment
- gn_ApGen=gn_ApGen-1
- SET BELL &gc_bell.
- SET CARRY &gc_carry.
- SET CLOCK &gc_clock.
- SET CENTURY &gc_century.
- SET CONFIRM &gc_confirm.
- SET DELIMITERS &gc_deli.
- ***SET INSTRUCT &gc_instruc. && remove for RunTime
- SET STATUS &gc_status.
- SET SAFETY &gc_safety.
- SET SCORE &gc_score.
- SET TALK &gc_talk.
-
- IF gn_Apgen < 1
- ON KEY LABEL F1
- CLEAR ALL
- CLEAR WINDOWS
- CLOSE ALL
- CLOSE PROCEDURE
- SET CLOCK OFF
- SET ESCAPE ON
- SET MESSAGE TO ""
- CLEAR
- ENDIF
- RETURN
-
- *******************************************************************************
- * Description..: Procedure files for generated menu system.
- * The programs that follow are common to main routines
- * The last procedure is the Menu Process DEFinition
- *******************************************************************************
- PROCEDURE Lockit
- PARAMETER ltype
- IF NETWORK()
- gn_error=0
- ON ERROR DO Multerr
- IF ltype = "1"
- ll_lock=FLOCK()
- ENDIF
- IF ltype = "2"
- ll_lock=RLOCK()
- ENDIF
- ON ERROR
- ENDIF
- RETURN
-
- PROCEDURE Info_Box
- PARAMETERS lc_say
- ? lc_say
- ? REPLICATE("-",LEN(lc_say))
- ?
- RETURN
- * EOP: Info_Box
-
- PROCEDURE get_sele
- *-- Get the user selection & store BAR into variable
- gn_send = BAR() && Variable for print testing
- DEACTIVATE POPUP
- RETURN
-
- PROCEDURE ShowPick
- listval=PROMPT()
- IF LEFT(entryflg,1)="B"
- lc_file=POPUP()
- DO &lc_file. WITH "A"
- RETURN
- ENDIF
- IF TYPE("lc_window")="U"
- ACTIVATE WINDOW ShowPick
- ELSE
- ACTIVATE WINDOW &lc_window.
- ENDIF
- STORE 0 TO ln_ikey,x1,x2
- ln_ikey=LASTKEY()
- IF ln_ikey=13
- x1=AT(TRIM(listval)+',',lc_fldlst)
- IF x1 = 0
- lc_fldlst=lc_fldlst+TRIM(listval)+','
- ELSE
- x2=AT(',',SUBSTR(lc_fldlst,x1))
- lc_fldlst=STUFF(lc_fldlst,x1,x2,'')
- ENDIF
- CLEAR
- ? lc_fldlst
- ENDIF
- ACTIVATE SCREEN
- RETURN
- * EOP: ShowPick
-
- PROCEDURE Cleanup
- *-- test whether report option was selected
- DO CASE
- CASE gc_dev='CON'
- WAIT
- CASE gc_dev='PRN'
- SET PRINT OFF
- SET PRINTER TO
- CASE gc_dev='TXT'
- CLOSE ALTERNATE
- ENDCASE
- RETURN
-
- * EOP: Cleanup
-
- PROCEDURE Pause
- PARAMETER lc_msg
- *-- Parameters : lc_msg = message line
- IF TYPE("lc_message")="U"
- gn_error=ERROR()
- ENDIF
- lc_msg = lc_msg
- lc_option='0'
- ACTIVATE WINDOW Pause
- IF gn_error > 0
- IF TYPE("lc_message")="U"
- @ 0,1 SAY [An error has occurred !! - Error message: ]+MESSAGE()
- ELSE
- @ 0,1 SAY [Error # ]+lc_message
- ENDIF
- ENDIF
- @ 1,1 SAY lc_msg
- WAIT " Press any key to continue..."
- DEACTIVATE WINDOW Pause
- RETURN
-
- * EOP: Pause
-
- PROCEDURE Multerr
- *-- set the global error variable
- gn_error=ERROR()
- *-- contains error number to test
- lc_erno=STR(ERROR(),3)+','
- *-- option var.
- lc_opt='T'
- *-- Dialog box for options Try again and Return to menu.
- IF lc_erno $ "108,109,128,129,"
- ACTIVATE WINDOW Pause
- @ 0,2 SAY lc_erno+" "+MESSAGE()
- @ 2,22 SAY "T = Try again, R = Return to menu." GET lc_opt ;
- PICTURE "!" VALID lc_opt $ "TR"
- READ
- DEACTIVATE WINDOW Pause
- IF lc_opt = "R"
- RETURN
- ENDIF
- ENDIF
- *-- Display message and return to menu.
- IF .NOT. lc_erno $ "108,109,128,129,"
- DO PAUSE WITH ERROR()
- RETURN
- ENDIF
- *-- reset global variable
- gn_error=0
- *-- Try the command again
- RETRY
- RETURN
-
- * EOP: Multerr
-
- PROCEDURE Trace
- * Desc: Trace procedure - to let programmer know what module
- * is about to execute and what module has executed.
- PARAMETERS p_msg, p_lvl
- *-- Parameters : p_msg = message line, p_lvl = trace level
- lc_msg = p_msg
- ln_lvl = p_lvl
- lc_trp = ' '
- IF gn_trace < ln_lvl
- RETURN
- ENDIF
- DEFINE WINDOW trace FROM 11,00 TO 16,79 DOUBLE
- DO WHILE lc_trp <> 'Q'
- @ 2,40-LEN(lc_msg)/2 SAY lc_msg
- @ 4,05 SAY 'S - Set trace level, D - Display status, M - display Memory'
- @ 5,05 SAY 'P - Turn printer on, Q - to Quit'
- lc_trp = 'Q'
- @ 5,38 GET lc_trp PICTURE "!"
- READ
- DO CASE
- CASE lc_trp = 'S'
- @ 2,01 CLEAR
- @ 2,33 SAY 'Set trace level'
- @ 4,05 SAY 'Enter trace level to change to:' GET gn_trace PICTURE '#'
- @ 5,05 SAY ' '
- READ
- IF gn_trace=0
- @ 2,01 CLEAR
- @ 3,05 SAY 'Trace is now turned off..To reactivate Trace - Press [F3]'
- @ 4,05 say 'Press any key to continue...'
- WAIT ''
- ENDIF
- CASE lc_trp = 'D'
- DISPLAY STATUS
- WAIT
- CASE lc_trp = 'M'
- DISPLAY MEMORY
- WAIT
- CASE lc_trp = 'P'
- SET PRINT ON
- ENDCASE
- ENDDO
- SET PRINT OFF
- @ 24,79 SAY " "
- RELEASE WINDOW trace
- RETURN
-
- * EOP: Trace
-
- PROCEDURE PrintSet
- *-- Initialize variables
- gc_dev='CON'
- lc_choice=' '
- gn_pkey=0
- gn_send=0
-
- DEFINE WINDOW printemp FROM 08,25 TO 17,56
-
- DEFINE POPUP SavePrin FROM 10,40
- DEFINE BAR 1 OF SavePrin PROMPT " Send output to ..." SKIP
- DEFINE BAR 2 OF SavePrin PROMPT REPLICATE(CHR(196),24) SKIP
- DEFINE BAR 3 OF SavePrin PROMPT " CON: Console" MESSAGE "Send output to Screen"
- DEFINE BAR 4 OF SavePrin PROMPT " LPT1: Parallel port 1 " MESSAGE "Send output to LPT1:"
- DEFINE BAR 5 OF SavePrin PROMPT " LPT2: Parallel port 2" MESSAGE "Send output to LPT2:"
- DEFINE BAR 6 OF SavePrin PROMPT " COM1: Serial port 1" MESSAGE "Send output to COM1:"
- DEFINE BAR 7 OF SavePrin PROMPT " FILE = REPORT.TXT" MESSAGE "Send output to File Report.txt"
- ON SELECTION POPUP SavePrin DO get_sele
-
- ACTIVATE POPUP SavePrin
- RELEASE POPUP SavePrin
-
- IF gn_send = 7
- gc_dev = 'TXT'
- SET ALTERNATE TO REPORT.TXT
- SET ALTERNATE ON
- ELSE
- IF .NOT. (gn_send = 3 .OR. LASTKEY() = 27)
- gc_dev = 'PRN'
- temp = SUBSTR(" LPT1LPT2COM1 ",((gn_send-2)-1)*4,4)
- ON ERROR DO prntrtry
- SET PRINTER TO &temp.
- IF gn_pkey <> 27
- SET PRINT ON
- ENDIF
- ON ERROR
- ENDIF
- ENDIF
- RELEASE WINDOW printemp
- RETURN
-
- PROCEDURE prntrtry
- PRIVATE lc_escape
- lc_escape = SET("ESCAPE")
- IF .NOT. PRINTSTATUS()
- IF lc_escape = "ON"
- SET ESCAPE OFF
- ENDIF
- gn_pkey = 0
- ACTIVATE WINDOW printemp
- @ 1,0 SAY "Please ready your printer or"
- @ 2,0 SAY " press ESC to cancel"
- DO WHILE ( .NOT. PRINTSTATUS()) .AND. gn_pkey <> 27
- gn_pkey = INKEY()
- ENDDO
- DEACTIVATE WINDOW printemp
- SET ESCAPE &lc_escape.
- IF gn_pkey <> 27
- RETRY
- ENDIF
- ENDIF
- RETURN
-
- * EOP: PrintSet
-
- PROCEDURE Position
- IF LEN(DBF()) = 0
- DO Pause WITH "Database not in use. "
- RETURN
- ENDIF
- SET SPACE ON
- SET DELIMITERS OFF
- ln_type=0 && sublevel selection
- ln_rkey=READKEY() && test for ESC or Return
- ln_rec=RECNO() && DBF record number
- ln_num=0 && for input of a number
- ld_date=DATE() && for input of a date
- lc_option='0' && main option ie. Seek, Goto and Locate
- *-- Scope ie. ALL, REST, NEXT <n>
- STORE SPACE(10) TO lc_scp
- *-- 1 = Character SEEK, 2 = For clause, 3 = While clause
- STORE SPACE(40) TO lc_ln1, lc_ln2, lc_ln3
- lc_temp=""
- @ 0,00 SAY "Index order: "+IIF(""=ORDER(),"Database is in natural order",ORDER())
- @ 1,00 SAY "Listed below are the first 16 fields."
- lc_temp=REPLICATE(CHR(196),19)
- @ 2,0 SAY CHR(218)+lc_temp+CHR(194)+lc_temp+CHR(194)+lc_temp+CHR(194)+lc_temp
- ln_num=240
- DO WHILE ln_num < 560
- lc_temp=FIELD( (ln_num-240)/20 +1)
- @ (ln_num/80),MOD(ln_num,80) SAY CHR(179)+;
- lc_temp+SPACE(11-LEN(lc_temp))+;
- SUBSTR("= Char = Date = Logic = Num = Float = Memo ",;
- AT(TYPE(lc_temp),"CDLNFMU")*8-7,8)
- ln_num=ln_num+20
- ENDDO
- ln_num=1
-
- DEFINE POPUP Posit1 FROM 8,30
- DEFINE BAR 1 OF Posit1 PROMPT " Position by " SKIP
- DEFINE BAR 2 OF Posit1 PROMPT REPLICATE(CHR(196),15) SKIP
- DEFINE BAR 3 OF Posit1 PROMPT " SEEK Record" MESSAGE "Search on index key" SKIP FOR ""=ORDER()
- DEFINE BAR 4 OF Posit1 PROMPT " GOTO Record" MESSAGE "Position to specific record"
- DEFINE BAR 5 OF Posit1 PROMPT " LOCATE Record " MESSAGE "Locate record for condition"
- DEFINE BAR 6 OF Posit1 PROMPT " Return" MESSAGE "Return without positioning"
- ON SELECTION POPUP Posit1 DO get_sele
-
- SET CONFIRM ON
- DO WHILE lc_option='0'
- ACTIVATE POPUP Posit1
- lc_option = ltrim(str(gn_send)) && for popup
- IF LASTKEY() = 27 .OR. lc_option="6"
- GOTO ln_rec
- EXIT
- ENDIF
- DO CASE
- CASE lc_option='3'
- *-- Seek
- IF LEN(NDX(1))=0 .AND. LEN(MDX(1))=0
- DO Pause WITH "Can't use this option - No index files are open."
- LOOP
- ENDIF
- ln_type=1
- lc_ln1=SPACE(40)
- DEFINE WINDOW Posit2 FROM 8,19 TO 15,62 DOUBLE
- ACTIVATE WINDOW Posit2
- @ 1,1 SAY "Enter the type of expression:" GET ln_type PICT "#" RANGE 1,3
- @ 2,1 SAY "(1=character, 2=numeric and 3=date.)"
- READ
- IF .NOT. (READKEY() = 12 .OR. READKEY() = 268)
- SET CONFIRM ON
- @ 3,1 SAY "Enter the key expression to search for:"
- IF ln_type=3
- @ 4,1 GET ld_date PICT "@D"
- ELSE
- IF ln_type=2
- @ 4,1 GET ln_num PICT "##########"
- ELSE
- @ 4,1 GET lc_ln1
- ENDIF
- ENDIF
- READ
- SET CONFIRM OFF
- IF .NOT. (READKEY() = 12 .OR. READKEY() = 268)
- lc_temp=IIF(ln_type=1,"TRIM(lc_ln1)",IIF(ln_type=2,"ln_num","ld_date"))
- SEEK &lc_temp.
- ENDIF
- ENDIF
- RELEASE WINDOWS Posit2
- CASE lc_option='4'
- *-- Goto
- ln_type=1
- DEFINE POPUP Posit2 FROM 8,30
- DEFINE BAR 1 OF Posit2 PROMPT " GOTO:" SKIP
- DEFINE BAR 2 OF Posit2 PROMPT REPLICATE(CHR(196),10) SKIP
- DEFINE BAR 3 OF Posit2 PROMPT " TOP" MESSAGE "GOTO Top of File"
- DEFINE BAR 4 OF Posit2 PROMPT " BOTTOM" MESSAGE "GOTO Bottom of File"
- DEFINE BAR 5 OF Posit2 PROMPT " Record # " MESSAGE "GOTO A Specific Record"
- ON SELECTION POPUP Posit2 DO get_sele
- ACTIVATE POPUP posit2
- ln_type = gn_send
- IF LASTKEY() <> 27
- IF ln_type=5
- DEFINE WINDOW Posit2 FROM 8,26 TO 13,50 DOUBLE
- ACTIVATE WINDOW Posit2
- ln_num=0
- @ 3,1 SAY "Max. Record # = "+LTRIM(STR(RECCOUNT()))
- @ 1,1 SAY "Record to GOTO" GET ln_num PICT "######" RANGE 1,RECCOUNT()
- READ
- IF .NOT. (READKEY() = 12 .OR. READKEY() = 268)
- GOTO ln_num
- ENDIF
- RELEASE WINDOWS Posit2
- ELSE
- lc_temp=IIF(ln_type=3,"TOP","BOTTOM")
- GOTO &lc_temp.
- ENDIF
- ENDIF
- CASE lc_option='5'
- *-- Locate
- DEFINE WINDOW Posit2 FROM 8,16 TO 14,66 DOUBLE
- ACTIVATE WINDOW Posit2
- @ 1,19 SAY "ie. ALL, NEXT <n>, and REST"
- @ 1,01 SAY "Scope:" GET lc_scp
- @ 2,01 SAY "For: " GET lc_ln2
- @ 3,01 SAY "While:" GET lc_ln3
- READ
- IF .NOT. (READKEY() = 12 .OR. READKEY() = 268)
- lc_temp=TRIM(lc_scp)
- lc_temp=lc_temp + IIF(LEN(TRIM(lc_ln2)) > 0," FOR "+TRIM(lc_ln2),"")
- lc_temp=lc_temp + IIF(LEN(TRIM(lc_ln3)) > 0," WHILE "+TRIM(lc_ln3),"")
- IF LEN(lc_temp) > 0
- LOCATE &lc_temp.
- ELSE
- DO Pause WITH "All fields were blank."
- ENDIF
- ENDIF
- RELEASE WINDOW Posit2
- ENDCASE
- IF EOF()
- DO Pause WITH "Record not found."
- GOTO ln_rec
- ENDIF
- IF READKEY()=12 .OR. READKEY()= 268 .OR. LASTKEY()=27 && Esc was hit
- lc_option='0'
- ENDIF
- ENDDO
- SET DELIMITERS &gc_deli.
- SET CONFIRM OFF
- RETURN
-
- * EOP: Position
-
- PROCEDURE Postnhlp
- ln_getkey=INKEY()
- DO CASE
- CASE "SEEK" $ PROMPT()
- HELP SEEK
- CASE "GOTO" $ PROMPT()
- HELP GOTO
- CASE "LOCATE" $ PROMPT()
- HELP LOCATE
- ENDCASE
- RETURN
- * EOP: Postnhlp
-
-
- **********************************************************************
- * Program......: MPDEF
- * Author.......: This is an APPLICATION OBJECT.
- * Date.........: 12-04-88
- * Notice.......: Type information here or greetings to your users.
- * dBASE Ver....: See Application menu to use as sign-on banner.
- * Generated by.: APGEN version 1.0
- * Description..: Customer Application Example
-
- * Description..: Defines all menus in the system
- **********************************************************************
- PROCEDURE MPDEF
- IF ISCOLOR()
- SET COLOR OF NORMAL TO W+/B
- SET COLOR OF MESSAGES TO W+/B
- SET COLOR OF TITLES TO W+/B
- SET COLOR OF HIGHLIGHT TO B/W
- SET COLOR OF BOX TO B/W
- SET COLOR OF INFORMATION TO B/W
- SET COLOR OF FIELDS TO B/W
- ENDIF
- CLEAR
-
-
- DEFINE WINDOW FullScr FROM 0,0 TO 24,79 NONE
- DEFINE WINDOW Savescr FROM 0,0 TO 21,79 NONE
- DEFINE WINDOW Helpscr FROM 0,0 TO 21,79 NONE
- DEFINE WINDOW Browscr FROM 1,0 TO 21,79 NONE
- IF gn_ApGen=1
- DEFINE WINDOW Exit_App FROM 11,17 TO 15,62 DOUBLE
- ENDIF
- *-- Window for pause message box
- DEFINE WINDOW Pause FROM 15,00 TO 19,79 DOUBLE
-
- ACTIVATE WINDOW FullScr
- @ 24,00
- @ 23,00 SAY "Loading..."
- SET BORDER TO DOUBLE
- *-- Bar
- DEFINE MENU CUSTMENU MESSAGE "CLASS MENU EXAMPLE"
- DEFINE PAD PAD_1 OF CUSTMENU PROMPT "ADD" AT 2,9
- ON SELECTION PAD PAD_1 OF CUSTMENU DO ACT01
- DEFINE PAD PAD_2 OF CUSTMENU PROMPT "CHANGE" AT 2,21
- ON SELECTION PAD PAD_2 OF CUSTMENU DO ACT01
- DEFINE PAD PAD_3 OF CUSTMENU PROMPT "REPORT" AT 2,37
- ON SELECTION PAD PAD_3 OF CUSTMENU DO ACT01
- DEFINE PAD PAD_4 OF CUSTMENU PROMPT "EXIT" AT 2,68
- ON SELECTION PAD PAD_4 OF CUSTMENU DO ACT01
- ?? "."
- @ 23,00 CLEAR
- RETURN
- *-- EOP: MPDEF.PRG
-
- PROCEDURE 1HELP1
- ACTIVATE WINDOW Helpscr
- SET ESCAPE OFF
- ACTIVATE SCREEN
- @ 0,0 CLEAR TO 21,79
- @ 1,0 TO 21,79 COLOR B/W
- @ 24,00
- @ 24,26 SAY "Press any key to continue..."
- @ 0,0 SAY ""
- ln_row=INKEY()
- DO CASE
- *-- help for menu CUSTMENU
- CASE "01"=gc_prognum
- @ 2,2 SAY "No Help defined."
- ln_row=INKEY(0)
- ENDCASE
- SET ESCAPE ON
- @ 24,00
- DEACTIVATE WINDOW Helpscr
- RETURN
- *-- EOP: 1HELP1
-